package com.ocean.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ocean.admin.entity.SysMenu;
import com.ocean.admin.model.dto.menu.SysMenuQueryDTO;
import com.ocean.admin.model.dto.menu.SysMenuSaveDTO;
import com.ocean.admin.model.dto.menu.SysMenuUpdateDTO;
import com.ocean.admin.model.vo.menu.SysMenuRuleVo;
import com.ocean.admin.model.vo.menu.SysMenuVo;

import java.util.List;
import java.util.Set;

/**
 * <p>
 * 菜单权限表 服务类
 * </p>
 *
 * @author zhang
 * @since 2022-08-16
 */
public interface ISysMenuService extends IService<SysMenu> {

    /**
     * 根据用户ID查询权限
     *
     * @param userId 用户ID
     * @return 权限列表
     */
    Set<String> selectMenuPermsByUserId(Long userId);

    /**
     * 获取菜单列表
     *
     * @param queryDTO 查询条件
     * @return 结果
     */
    List<SysMenuVo> listTree(SysMenuQueryDTO queryDTO);

    /**
     * 根据角色查询菜单
     *
     * @param roleId 角色ID
     * @return 结果
     */
    SysMenuRuleVo roleMenuTreeSelect(Long roleId);

    /**
     * 新增菜单
     *
     * @param saveDTO 菜单信息
     * @return 结果
     */
    String saveMenu(SysMenuSaveDTO saveDTO);

    /**
     * 修改菜单
     *
     * @param updateDTO 菜单信息
     * @return 结果
     */
    String updateMenu(SysMenuUpdateDTO updateDTO);

    /**
     * 删除菜单
     *
     * @param menuId 菜单ID
     * @return 结果
     */
    String removeMenu(Long menuId);
}
